import logging
import logging.handlers
import time
import unittest


def logger_code(filename,when='midnight', interval=1, backupCount=3):
    # 创建日志器对象
    logger = logging.getLogger()
    # 给日志器对象设置日志打印级别
    logger.setLevel(logging.DEBUG)
    '''一般建议只使用DEBUG、INFO、WARNING、ERROR这四个级别,还有一个critical严重错误级别'''

    # 创建 输出到日志控制台 处理器对象
    handler = logging.StreamHandler()
    # 创建 输出到日志文件 处理器对象
    file_handler = logging.handlers.TimedRotatingFileHandler(filename, when, interval, backupCount,
                                                             encoding='utf-8')

    # 创建日志信息格式
    formatter = logging.Formatter(logging.BASIC_FORMAT)
    # 将日志信息格式设置到这两个处理器对象
    handler.setFormatter(formatter)
    file_handler.setFormatter(formatter)

    # 给日志器对象添加这两个处理器对象
    logger.addHandler(handler)
    logger.addHandler(file_handler)

def logger_use(filename,when='midnight', interval=1, backupCount=3):
    logger_code(filename,when='midnight', interval=1, backupCount=3)

if __name__ == '__main__':
    logger_use('a.log')
    while True:
        logging.debug('test log xxx')
        time.sleep(1)

def add(a,b):
    return a+b

# 看下在项目中如何使用封装好的logger代替print
class TestXXX(unittest.TestCase):
    def setUp(self):
        logger_use('XXX.log')

    def test_add(self):
        result = add(1,2)
        logging.info(f'  result={result}')
        logging.debug(f'  result={result}')